# -*-coding:utf-8-*-
'''

File Create by Author:Backpackerxl
Create File Time:2021/9/4/
Program IDE:PyCharm
File Name:backpackerxl.py

'''
from functools import total_ordering
import sys
from time import sleep
import re


COLOR = {
    "BLACK_COLOR": "\033[30m",
    "RED_COLOR": "\033[31m",
    "GREEN_COLOR": "\033[32m",
    "YELLO_COLOR": "\033[33m",
    "BLUE_COLOR": "\033[34m",
    "PURPLE_COLOR": "\033[35m",
    "SKYBLUE_COLOR": "\033[36m",
    "WHITE_COLOR": "\033[37m"
}


def changeColor(val):
    if val == 30:
        return COLOR.get('BLACK_COLOR')
    elif val == 31:
        return COLOR.get('RED_COLOR')
    elif val == 32:
        return COLOR.get('GREEN_COLOR')
    elif val == 33:
        return COLOR.get('YELLO_COLOR')
    elif val == 34:
        return COLOR.get('BLUE_COLOR')
    elif val == 35:
        return COLOR.get('PURPLE_COLOR')
    elif val == 36:
        return COLOR.get('SKYBLUE_COLOR')
    elif val == 37:
        return COLOR.get('WHITE_COLOR')
    else:
        return print(COLOR.get('RED_COLOR') + "Color Number Is Error" + "\033[0m")


def printNumber(i, count, val, colornu, speed):
    '''
    打字机效果
    :param i: 打印字符
    :param count: 控制换行
    :param val: 控制每一行打印的个数
    :param colornu:
    文字显示的颜色(数字类型)
    30 ==> 黑色
    31 ==> 红色
    32 ==> 绿色
    33 ==> 黄色
    34 ==> 蓝色
    35 ==> 紫色
    36 ==> 天蓝色
    37 ==> 白色
    :param speed: 控制打印速度(s)
    '''
    if count % val == 0:
        print()
    print(changeColor(colornu) + str(i) + "\033[0m", end=' ')
    sys.stdout.flush()
    sleep(speed)


def inputColor(txt, colornu):
    '''
    输入显示的颜色
    :param txt: 提示文本
    :param colornu:
    文字显示的颜色(数字类型)
    30 ==> 黑色
    31 ==> 红色
    32 ==> 绿色
    33 ==> 黄色
    34 ==> 蓝色
    35 ==> 紫色
    36 ==> 天蓝色
    37 ==> 白色
    :return: 返回input
    '''
    return input(changeColor(colornu) + txt + "\033[0m")


def printColor(txt, colornu, tag):
    '''
       打印显示的颜色
       :param txt: 提示文本
       :param colornu:
       :tag 指定不换行
       文字显示的颜色(数字类型)
       30 ==> 黑色
       31 ==> 红色
       32 ==> 绿色
       33 ==> 黄色
       34 ==> 蓝色
       35 ==> 紫色
       36 ==> 天蓝色
       37 ==> 白色
       :return: 返回print

       '''
    if tag == 1:
        return print(changeColor(colornu) + txt + "\033[0m", end="")
    elif tag == 2:
        return print(changeColor(colornu) + txt + "\033[0m")
    else:
        return print(changeColor(31) + 'tag or colornu 错误' + "\033[0m")


'''
判断是否为质数
'''


def isPrimeNumbers(val):
    '''
    判断是否为素数
    :param val: 待判断的数
    :return: 返回判断值
    '''
    flag = False
    for i in range(2, val):
        if val % i == 0:
            flag = True
            break
    return flag


def _changArray(arr, j):
    '''
    内部函数
    交换
    '''
    arr[j+1] = arr[j+1] ^ arr[j]
    arr[j] = arr[j+1] ^ arr[j]
    arr[j+1] = arr[j+1] ^ arr[j]


def mySortArray(arr, tag):
    '''
    :arr 一个可排序的对象
    :tag 代表升序还是降序
    1 ->代表升序
    2 ->代表降序
    '''
    lens = len(arr)
    for i in range(lens):
        for j in range(0, lens-1):
            if tag == 1:
                if arr[j+1] < arr[j]:
                    _changArray(arr, j)
            elif tag == 2:
                if arr[j+1] > arr[j]:
                    _changArray(arr, j)
            else:
                print(changeColor(31)+'tag is error'+'\033[0m')
    return arr

